#ifndef AVALON_SERVICELOCATORTESTS_HPP
#define AVALON_SERVICELOCATORTESTS_HPP
#include "Avalon/IO/IO.hpp"
#include "Avalon/ServiceLocator/ServiceLocator.hpp"

namespace Avalon {
namespace ServiceLocator {
namespace Tests {
  class MockServiceLocatorClientComponents;
  class MockServiceLocatorServerComponents;
  class MockServiceLocatorDataStore;
  class ServiceLocatorServerTester;
  class UriTester;

  //! Returns a ServiceChannelFactory suitable for unit testing.
  ServiceChannelFactory* CreateTestServiceChannelFactory();

  //! Builds a Channel between a service and a client for testing purposes.
  /*!
    \param builder The ServiceChannelBuilder establishing the connection.
    \param node The JSON node describing the Channel.
    \return A Channel to a MockServerConnection.
  */
  Carry<IO::Channel> TestChannelBuilder(ServiceChannelBuilder builder,
    const std::string& node);
}
}
}

#endif // AVALON_SERVICELOCATORTESTS_HPP
